#define _CRT_SECURE_NO_WARNINGS

//#include<stdio.h>
//void text1()
//{
//	int a = 10;
//	int* pa = &a;
//	printf("a=%d\n", a);
//	*pa = 20;
//	printf("a=%d", *pa);
//}
//void text2()
//{
//	int a = 10;
//	int* const pa = &a;
//	printf("a=%d\n", a);
//	*pa = 20;
//	pa++;
//	printf("a=%d", *pa);
//}
//int main()
//{
	/*int a;
	a = 10;
	char ch = 'a';
	int* pa = &a;
	char* pch = &ch;
	*pa = 7;*/
	/*printf("%p\n", &a);
	printf("%zd\n", sizeof(char*));
	printf("%zd\n", sizeof(short*));
	printf("%zd\n", sizeof(int*));
	printf("%zd", sizeof(double*));*/
	/*int a = 0x11223344;
	int* pa =&a;
	*pa = 0;
	a = 0x11223344;
	char* pc = (char*)&a;
	*pc = 0;*/
	/*int n = 0;
	int* pa = &n;
	char* pc = (char*)&n;
	printf("%p\n", &n);
	printf("%p\n",pa);
	printf("%p\n",pa+1);
	printf("%p\n",pc);
	printf("%p\n", pc+1);*/
	/*int a = 10;
	void* pa = &a;
	void* pc = &a;
	*void = 10;
	printf("%p", pa);*/

	/*int a = 10;
	a = 20;
	const int m = 9;
	int* pm = &m;
	*pm = 89;
	printf("%d", m);*/
//	text1();
//	test2();
//	text3();
//	text4();
//
//
//	return 0;
//}



//#include<stdio.h>
//int main()
//{
//	int a[5] = { 1,2,3,4,5 };
//	int m = (sizeof(a)) / sizeof(a[0]);
//	int* pi = &a[0];
//	for (int i = 0; i < m; i++)
//	{
//		printf("%d\n", *(pi + i));
//	}
//
//
//
//
//
//
//	return 0;
//}

//#include<stdio.h>
//int my_strlen(char* s)
//{
//	char* pc = s;
//	while (*pc != '\0')
//	{
//		pc++;
//	}
//	return pc - s;
//}
//int main()
//{
//	printf("%d", my_strlen("abcdf"));
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int num[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(num) / sizeof(num[0]);
//	int* ps = &num[0];
//	while (ps <num + sz)
//	{
//		printf("%d\n", *ps);
//		ps++;
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
//	int right = sizeof(a) / sizeof(a[0])-1;
//	int left = 0;
//	int mid = 0;
//	int key = 0;
//	scanf("%d", &key);
//	int flag = 0;
//	while (left <= right)
//	{
//		mid = (right + left) / 2;
//		if (a[mid] < key)
//		{
//			left = mid + 1;
//		}
//		else if (a[mid] > key)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			flag = 1;
//			break;
//		}
//	}
//	if (flag == 1)
//	{
//		printf("YES");
//	}
//	else
//	{
//		printf("NO");
//	}
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int num[100];
//	int n, m;
//	scanf("%d %d", &n, &m);
//	for (int i = 0; i < n; i++)
//	{
//		scanf("%d", &num[i]);
//	}
//	int key = 0;
//	int right = n;
//	int left = 0;
//	int mid = 0;
//	int g = 0;
//	while (m--)
//	{
//		int key = 0;
//		int right = n;
//		int left = 0;
//		int mid = 0;
//		int g = 0;
//		scanf("%d", &key);
//		int flag = 0;
//		while (right >= left)
//		{
//			mid = left + (right - left) / 2;
//			if (num[mid] < key)
//			{
//				left = mid + 1;
//			}
//			else if (num[mid] > key)
//			{
//				right = mid - 1;
//			}
//			else
//			{
//				if (mid == 0 || num[mid - 1] != key)
//				{
//					g = mid;
//					flag = 1;
//					break;
//				}
//				else
//				{
//					right = mid - 1;
//				}
//			}
//		}
//		if (flag == 1)
//		{
//			printf("%d ", g + 1);
//		}
//		else if (flag == 0)
//		{
//			printf("-1 ");
//		}
//	}
//	return 0;
//}
#include<math.h>
#include<stdio.h>
int main()
{
	long long n;
	scanf("%lld", &n);
	int flag = 0;
	int num;
	double right = n;
	double left = 0;
	double mid = 0;

	while (fabs(right-left)>0.000001)
	{
		mid = left + (right - left) / 2;
		if (mid * mid * mid < n)
		{
			left = mid;
		}
		else if(mid * mid * mid > n)
		{
			right = mid;
		}
		else
		{
			break;
		}
	}
		num =(int)mid;
		printf("%d",num);
	return 0;
}